/*#include "ListaSolucao.h"
#include "Kruskal.h"
#include "SolucaoGRASPSTS.h"*/

#include <stdio.h>
#include <string.h>

int main(){	

	FILE *pf;
        char *n = "saida/conj.data";
        if((pf = fopen(n,"w")) ==NULL){
        	printf("\nNao consigo abrir o arquivo ! ");
                return 0;
        }

	int iter = 1;
	int tamSol = 0;

	//|S| == 3
	for(int i=0; i<10; i++){
		for(int j=i+1; j<10; j++){
			for(int k=j+1; k<10; k++){
				char *conjunto = new char[30];conjunto[0]='\0';
				char *saida = new char[30];saida[0]='\0';
				for(int m=0; m<10; m++){
					if((m==i)||(m==j)||(m==k)){
						strcat(conjunto, "1 ");
						++tamSol;
					}else{
						strcat(conjunto, "0 ");
					}	
				}
				sprintf(saida, "%d %s%d\n", iter, conjunto, tamSol);
				fprintf(pf, saida);
				delete conjunto; delete saida; iter++;tamSol=0;				
			}
		}
	}

	//|S| == 4
	for(int i=0; i<10; i++){
		for(int j=i+1; j<10; j++){
			for(int k=j+1; k<10; k++){
				for(int l=k+1; l<10; l++){
					char *conjunto = new char[30];conjunto[0]='\0';
					char *saida = new char[30];saida[0]='\0';
					for(int m=0; m<10; m++){
						if((m==i)||(m==j)||(m==k)||(m==l)){
							strcat(conjunto, "1 ");
							++tamSol;
						}else{
							strcat(conjunto, "0 ");
						}	
					}
					sprintf(saida, "%d %s%d\n", iter, conjunto, tamSol);
					fprintf(pf, saida);
					delete conjunto; delete saida; iter++;tamSol=0;
				}
			}
		}
	}
	
	//|S| == 5
	for(int i=0; i<10; i++){
		for(int j=i+1; j<10; j++){
			for(int k=j+1; k<10; k++){
				for(int l=k+1; l<10; l++){
					for(int a=l+1; a<10; a++){
						char *conjunto = new char[30];conjunto[0]='\0';
						char *saida = new char[30];saida[0]='\0';
						for(int m=0; m<10; m++){
							if((m==i)||(m==j)||(m==k)||(m==l)||(m==a)){
								strcat(conjunto, "1 ");
								++tamSol;
							}else{
								strcat(conjunto, "0 ");
							}	
						}
						sprintf(saida, "%d %s%d\n", iter, conjunto, tamSol);
						fprintf(pf, saida);
						delete conjunto; delete saida; iter++;tamSol=0;
					}
				}
			}
		}
	}
	
	//|S| == 6
	for(int i=0; i<10; i++){
		for(int j=i+1; j<10; j++){
			for(int k=j+1; k<10; k++){
				for(int l=k+1; l<10; l++){
					for(int a=l+1; a<10; a++){
						for(int b=a+1; b<10; b++){
							char *conjunto = new char[30];conjunto[0]='\0';
							char *saida = new char[30];saida[0]='\0';
							for(int m=0; m<10; m++){
								if((m==i)||(m==j)||(m==k)||(m==l)||(m==a)||(m==b)){
									strcat(conjunto, "1 ");
									++tamSol;
								}else{
									strcat(conjunto, "0 ");
								}	
							}
							sprintf(saida, "%d %s%d\n", iter, conjunto, tamSol);
							fprintf(pf, saida);
							delete conjunto; delete saida; iter++;tamSol=0;
						}
					}
				}
			}
		}
	}
	
	//|S| == 7
	for(int i=0; i<10; i++){
		for(int j=i+1; j<10; j++){
			for(int k=j+1; k<10; k++){
				for(int l=k+1; l<10; l++){
					for(int a=l+1; a<10; a++){
						for(int b=a+1; b<10; b++){
							for(int c=b+1; c<10; c++){
								char *conjunto = new char[30];conjunto[0]='\0';
								char *saida = new char[30];saida[0]='\0';
								for(int m=0; m<10; m++){
									if((m==i)||(m==j)||(m==k)||(m==l)||(m==a)||(m==b)||(m==c)){
										strcat(conjunto, "1 ");
										++tamSol;
									}else{
										strcat(conjunto, "0 ");
									}
								
								}
								sprintf(saida, "%d %s%d\n", iter, conjunto, tamSol);
								fprintf(pf, saida);
								delete conjunto; delete saida; iter++;tamSol=0;
							}
						}
					}
				}
			}
		}
	}
	//|S| == 8
	for(int i=0; i<10; i++){
		for(int j=i+1; j<10; j++){
			for(int k=j+1; k<10; k++){
				for(int l=k+1; l<10; l++){
					for(int a=l+1; a<10; a++){
						for(int b=a+1; b<10; b++){
							for(int c=b+1; c<10; c++){
								for(int d=c+1; d<10; d++){
									char *conjunto = new char[30];conjunto[0]='\0';
									char *saida = new char[30];saida[0]='\0';
									for(int m=0; m<10; m++){
										if((m==i)||(m==j)||(m==k)||(m==l)||(m==a)||(m==b)||(m==c)||(m==d)){
											strcat(conjunto, "1 ");
											++tamSol;
										}else{
											strcat(conjunto, "0 ");
										}
									}
									sprintf(saida, "%d %s%d\n", iter, conjunto, tamSol);
									fprintf(pf, saida);
									delete conjunto; delete saida; iter++;tamSol=0;
								}
							}
						}
					}
				}
			}
		}
	}
	
	//|S| == 9
	for(int i=0; i<10; i++){
		for(int j=i+1; j<10; j++){
			for(int k=j+1; k<10; k++){
				for(int l=k+1; l<10; l++){
					for(int a=l+1; a<10; a++){
						for(int b=a+1; b<10; b++){
							for(int c=b+1; c<10; c++){
								for(int d=c+1; d<10; d++){
									for(int e=d+1; e<10; e++){
										char *conjunto = new char[30];conjunto[0]='\0';
										char *saida = new char[30];saida[0]='\0';
										for(int m=0; m<10; m++){
											if((m==i)||(m==j)||(m==k)||(m==l)||(m==a)||(m==b)||(m==c)||(m==d)||(m==e)){
												strcat(conjunto, "1 ");
												++tamSol;
											}else{
												strcat(conjunto, "0 ");
											}
										}
										sprintf(saida, "%d %s%d\n", iter, conjunto, tamSol);
										fprintf(pf, saida);
										delete conjunto; delete saida; iter++;tamSol=0;
									}
								}
							}
						}
					}
				}
			}
		}
	}

	//|S| == 10
	char *conjunto = new char[30];conjunto[0]='\0';
	char *saida = new char[30];saida[0]='\0';
	for(int m=0; m<10; m++)
		strcat(conjunto, "1 ");
	sprintf(saida, "%d %s%d\n", iter, conjunto, 10);
	fprintf(pf, saida);

	fclose(pf);
}
